package com.wilmer.stemCourseCon.mapper;

import com.wilmer.common.core.domain.entity.SysDept;
import com.wilmer.stemCourseCon.domain.StemCourseCon;
import org.apache.ibatis.annotations.Param;

import java.util.List;


public interface StemCourseConMapper
{
    /**
     * 查询课程结构管理数据
     */
    public List<StemCourseCon> selectStemCourseConList(StemCourseCon stemCourseCon);


//    public List<Long> selectDeptListByRoleId(@Param("roleId") Long roleId, @Param("deptCheckStrictly") boolean deptCheckStrictly);

    /**
     * 根据课程结构ID查询信息
     */
    public StemCourseCon selectStemCourseConById(Long conId);

    /**
     * 根据ID查询所有子课程结构
     *
     */
    public List<StemCourseCon> selectChildrenStemCourseConById(Long stemCourseConId);

    /**
     * 根据ID查询所有子课程结构（正常状态）
     *
     */
    public int selectNormalChildrenStemCourseConById(Long stemCourseConId);

    /**
     * 是否存在子课程结构
     *
     */
    public int hasChildByStemCourseConId(Long stemCourseConId);

    /**
     * 查询课程结构是否存在课程
     */
    public int checkStemCourseConExistUser(Long stemCourseConId);

    /**
     * 校验课程结构名称是否唯一
     * 
     */
    public StemCourseCon checkStemCourseConNameUnique(@Param("conName") String conName, @Param("parentId") Long parentId);

    /**
     * 新增课程结构信息
     *
     */
    public int insertStemCourseCon(StemCourseCon stemCourseCon);

    /**
     * 修改课程结构信息
     *
     */
    public int updateStemCourseCon(StemCourseCon stemCourseCon);

    /**
     * 修改所在正常状态
     *
     */
    public void updateStemCourseConStatusNormal(Long[] stemCourseConIds);

    /**
     * 修改子元素关系
     *
     */
    public int updateStemCourseConChildren(@Param("stemCourseCons") List<StemCourseCon> stemCourseCons);

    /**
     * 删除课程结构管理信息
     */
    public int deleteStemCourseConById(Long stemCourseConId);
}
